package main

import (
	"fmt"
)

func main() {
	// defer关键字会在当前方法体结束之前来触发，当前声明周期全部执行完之后，才出栈
	// 并且是通过进栈出栈的方式来执行，即如果有多个defer语句，那么靠后的语句先执行
	defer fmt.Println("main::defer1 execute")

	fmt.Println("main::hello go 1")
	fmt.Println("main::hello go 2")

	defer fmt.Println("main::defer2 execute")
	var a int = 1
	defer fmt.Println("main::defer3 execute，包含变量a的值=", a)
	deferAndReturnFunc()
}
